﻿/*************************************************************************************
 * 文 件 名:   HK_NormalMapImporter
 * 
 * 描    述:   法线贴图导入时，自动设置 TextureType（根据后缀及贴图分辨率进行判定）
 * 
 * 版    本：  V1.0
 * 创 建 者：  京产肠饭
 * 创建时间：  2023/10/30
 * 链   接：  https://gitee.com/JingChanChangFan/hk_-unity-tools
*************************************************************************************/

using UnityEditor;
using UnityEngine;

namespace HKTools
{
    public class HK_NormalMapImporter : AssetPostprocessor
    {
        string[] suffix = new string[] { "_normal", "_nrm", "_n" };

        public void OnPreprocessTexture()
        {
            TextureImporter importer = assetImporter as TextureImporter;
            int width, height;
            importer.GetSourceTextureWidthAndHeight(out width, out height);

            // 获取导入贴图的路径
            string path = assetPath.ToLower();

            // 分辨率小于512的不处理（过滤下可能是UI的图片）
            if (width < 1024 || height < 1024)
                return;

            // 如果贴图后缀正常的话
            if (path.EndsWith(".png") || path.EndsWith(".jpg") || path.EndsWith(".tga")
             || path.EndsWith(".psd") || path.EndsWith(".exr") || path.EndsWith(".tif"))
            {
                path = path.Substring(0, path.Length - 4);

                bool isNormalMap = false;

                // 判断路径中是否包含normal或nrm的关键字
                for (int i = 0; i < suffix.Length; i++)
                {
                    if (path.EndsWith(suffix[i]))
                        isNormalMap = true;
                }

                // 如果是法线贴图，修改Texture Type为Normal map
                if (isNormalMap)
                {
                    TextureImporter textureImporter = (TextureImporter)assetImporter;

                    if (textureImporter.textureType != TextureImporterType.NormalMap)
                    {
                        textureImporter.textureType = TextureImporterType.NormalMap;
                        Debug.Log("图片：" + assetPath + " 自动转换为NormalMap");
                    }
                }
            }
        }
    }
}